稳定才是负载均衡的第一需求
6月份我发表了《为什么BFE可以取代Nginx》,收到大量反馈。为此,我发表了《为什么BFE可以取代Nginx:十问十答》。在这些过程中,我发现关于“什么是负载均衡的核心需求”,大家的认识并不统一。如果说到“什么是负载均衡的第一需求”,大家的意见分歧更大。
长久以来,很多写软件的同学对于“性能”这两个字有着非常执着的追求。尤其对于负载均衡这样的软件,不少同学坚定的认为,性能肯定是最重要的。
最近,B站发布了文章《2021.07.13 我们是这样崩的》。在这个事故中,B站的七层负载均衡转发集群中断服务几个小时。作为一个曾经守护万亿级流量平台多年的人来说,这样的事故我感同身受。不要说几个小时,对于我曾经守护的平台,这样的服务中断如果出现1分钟都已经是非常严重的事故了。
在这样的严重事故面前,我不知道坚信“性能是第一位”的同学感受是什么样的。你可以想象你面前是一辆汽车。当你站在一旁看别人开车的时候,你可能会更关注车子的速度。但是当你自己坐在驾驶位上,我想你一定会把安全性和稳定性放在第一位。毕竟,如果连安全性和稳定性都无法保证,车子跑的再快又有什么意义呢?
负载均衡不出问题是幸运,出了问题就是重大事故。但是,怎么才能保证尽量少出事故呢?
我一直认为,守护负载均衡流量平台的稳定性,只靠人的努力是不够的,而必须要有相关的机制保证。这些机制包括研发的流程(是否有足够严谨的设计、编码和测试),也包括软件的设计(是否易于扩展、易于运维),还包括使用的编程语言。对于最终的稳定性,这些环节缺一不可。还是可以用汽车来说明,要保证驾驶的安全性,汽车的每个零件要可靠,车子的设计不能有缺陷,驾驶过程也要规范。
在BFE的设计中,充分的体现了以上的思路。BFE选用了Go语言,牺牲了部分的性能,来换取更高的安全性和稳定性(及研发效率的提升)。在软件设计中,也从企业级的需求出发,在系统的可运维性方面做了很多的考虑。这方面的详情可以查看 《BFE:企业级七层负载均衡开源软件》。
在《软件工程能力漫谈》中,我阐述了“软件研发的目的是为了提供价值”。我希望大家都能认识到,性能并不是负载均衡软件的唯一价值,也不是最重要的价值。对于负载均衡软件来说,稳定性才是那个“1”,其他特性(性能,功能等等)都是“0”。如果没有稳定性这个“1”,有再多的“0”都没有用!
稳定才是负载均衡的第一需求。坐上驾驶位,我相信你会同意我的说法。
欢迎关注“BFE开源项目”微信公众号,获得本项目的更多信息。谢谢!